home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Games / Puzzle / Source / Puzzle.m < prev    next >
Text File  |  1994-04-01  |  1KB  |  62 lines

  1. /*
  2.  * STANDARD DISCLAIMER:
  3.  *  You may freely copy, distribute and reuse the code in this program.
  4.  *  Trirex disclaims any warranty of any kind, expressed or implied, as to
  5.  *  its fitness for any particular use.
  6.  */
  7.  
  8. /* Generated by Interface Builder */
  9.  
  10. #import "Puzzle.h"
  11. #import <appkit/Matrix.h>
  12. #import <libc.h>
  13.  
  14. @implementation Puzzle
  15.  
  16. - init
  17. {
  18.     [super init];
  19.  
  20.     blankPieceRow = blankPieceCol = 3;
  21.     return self;
  22. }
  23.  
  24. - appDidInit:sender
  25. {
  26.     [window makeKeyAndOrderFront: NULL];
  27.     return self;
  28. }
  29.  
  30. - movePiece:sender
  31. {
  32.     id piece;
  33.     int dx, dy;
  34.  
  35.     int oldRow = [sender selectedRow];
  36.     int oldCol = [sender selectedCol];
  37.  
  38.     /* Make sure that it's a legal move */
  39.     dx = abs(oldRow - blankPieceRow);
  40.     dy = abs(oldCol - blankPieceCol);
  41.  
  42.     if (dx > 1 || dy > 1) return self;
  43.     if (dx == 1 && dy ==1) return self;
  44.  
  45.     /* Get the id of the button on which the user clicked */
  46.     piece = [sender selectedCell];
  47.  
  48.     /* Swap the blank piece with the piece on which the user clicked */
  49.     [matrix putCell:piece at:blankPieceRow :blankPieceCol];
  50.     [matrix putCell:blank at:oldRow :oldCol];
  51.  
  52.     [matrix display];
  53.  
  54.     // Remember where the blank piece is located
  55.     blankPieceRow = oldRow;
  56.     blankPieceCol = oldCol;
  57.     return self;
  58. }
  59.  
  60.  
  61. @end
  62.